#ifndef _core_dispatch_invoker_hpp_
#define _core_dispatch_invoker_hpp_

/** \file invoker.hpp Contains the action_invoker
 *  \author Adrian Schweizer
 *  \created  $Sa 18 Aug 03:48:01 pm CEST 2007 schwadri@SchwadriComp.local$
 *  \modified $So 19 Aug 03:46:56 pm CEST 2007 schwadri@SchwadriComp.local$
 */

#include "limits.hpp"

#include <boost/type_traits/function_traits.hpp>

#include "detail/invoker_impl.hpp"

namespace core {

    namespace dispatch {

        template <class Signature, class Functor, class Key, class TypeLookup>
            class action_invoker :     public detail::get_invoker_impl <
                boost::function_traits<Signature>::arity,
                Signature,
                Functor,
                Key,
                TypeLookup
            >::type
            {
            protected:
                typedef typename detail::get_invoker_impl <
                    boost::function_traits<Signature>::arity,
                    Signature,
                    Functor,
                    Key,
                    TypeLookup
                >::type base_type;

            public:

                action_invoker(Key k, Functor f)
                : base_type(k,f)
                { }
            };

    } // namespace dispatch

} // namespace core


#endif // _core_dispatch_invoker_hpp_
